package com.library.service;

import com.library.entity.Staff;
import java.util.List;
import java.util.Map;

/**
 * 员工服务接口
 * 定义员工管理的所有业务方法
 */
public interface StaffService {

    /**
     * 新增员工
     * @param staff 员工信息对象
     * @return 操作结果：true-成功，false-失败（员工编号已存在）
     */
    boolean addStaff(Staff staff);

    /**
     * 更新员工信息
     * @param staff 包含更新信息的员工对象（必须包含id）
     * @return 操作结果：true-成功，false-失败（员工不存在或编号重复）
     */
    boolean updateStaff(Staff staff);

    /**
     * 根据ID删除员工
     * @param id 员工ID
     * @return 操作结果：true-成功，false-失败（员工不存在）
     */
    boolean deleteStaff(Long id);

    /**
     * 根据ID查询员工
     * @param id 员工ID
     * @return 员工信息对象，不存在则返回null
     */
    Staff getStaffById(Long id);

    /**
     * 按条件搜索员工
     * @param condition 搜索条件（支持name、employeeId、position等字段）
     * @return 符合条件的员工列表
     */
    List<Staff> getStaffByCondition(Map<String, Object> condition);

    /**
     * 查询所有员工
     * @return 所有员工信息列表
     */
    List<Staff> getAllStaff();
}